<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
         /*
            继承
            + 生活中的例子
              => 继承财产
            + 就是一个类去继承另一个类的属性和方法
              => 开发中其实有很多是属性和方法是重复定义的
              => 这个时候就可以通过继承的手段来简化代码和开发
            + 注意点
              => 继承必须是同类之间的继承
        */
        function Father(name, age) {
            this.name = name;
            this.age = age;
        }
        Father.prototype.money = function() {
            console.log("一个小目标");
        }

        function Son(name, age){
            this.name = name;
            this.age = age;
        }

        //截胡
        //方法1：将父类的原型对象赋值为子类原型对象
        // Son.prototype = Father.prototype;
        // let s=new Son('张三',18);
        // console.log(s);
        // console.log(s.money);//money的函数

        //问题:子类的修改影响了父类的属性和方法的使用
        // Son.prototype.like=function(){
        //     console.log("喜欢打游戏");
        // }
        // let f=new Father('李四',18);
        // f.like();//可以调用,为喜欢打游戏

        //解决方法：
        //方法2：将父类的实例函数调用给子类的原型对象
        Son.prototype=new Father('张三','18');
        Son.prototype.love=function(){
            console.log("喜欢打篮球");
        }
        let s=new Son('张三',18);
        let f=new Father('李四',18);

        console.log(s.love);
        console.log(s.money);
        console.log(f.love);
        //优点：
        //1.继承了父类的属性
        //2.继承了父类的方法
        //3.不会影响父类的属性
        //缺点：
        //继承的属性不在子类的实例上
        //代码传参传从子类原型对象传入

    </script>
</body>
</html>